// quando lo specificatore d'accesso alla classe è protected


// tutti i membri pubblici e protetti della classe base
// diverranno protetti della classe derivata


#include <iostream>
using namespace std;

class base
{
protected:  
int i,j; // privato di base, ma accessibile da derivata
public:
void impostaij (int a, int b) {i=a; j=b;}
void mostraij() {cout << i << " " << j << "\n";}
};

// eredita base come protected
class derivata : protected base
{
int k;
public:
// derivata può accedere alle variabili i e j ed a impostaij di base
void impostak() {impostaij(10,12); k=i*j;}
void mostratutto() {cout << k << "\n"; mostraij();};
};


int main()
{
derivata ob;
//ob.impostaij(2,3); non consentito impostaij è membro protetto di derivata
ob.impostak();
ob.mostratutto(); // noto in derivata1
//ob.mostraij; non consentito impostaij è membro protetto di derivata

return 0;
}

/*
120
10 12
Press any key to continue
*/

